package scripts;

import api.CommonApi;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.uncommons.reportng.HTMLReporter;
import util.ResponseData;
import util.TestDataUtil;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Array;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Random;
import java.util.UUID;
@Listeners({HTMLReporter.class})
public class TestVerify {
    private static Logger logger= LoggerFactory.getLogger(TestVerify.class);
    private static CommonApi commonApi = new CommonApi();
    @DataProvider
    public Object[][] build_data() throws IOException {
//        String file = FileUtils.readFileToString(new File("./data/verifycode.json"), "utf-8");
//        JSONArray jsonArray= JSONObject.parseArray(file);
//        Object[][] data=new Object[jsonArray.size()][];
//        for (int i=0;i< jsonArray.size();i++){
//            JSONObject jsonObject=jsonArray.getJSONObject(i);
//            Object type = jsonObject.get("type");
//            Object code = jsonObject.get("code");
//            data[i]=new Object[]{type,code};
//        }
//        logger.info("data={}",data);
//        System.out.println(Arrays.deepToString(data));
        String test_data="type,code";
        Object[][] data = TestDataUtil.build_data("verifycode.json", test_data);
        logger.info("data={}", Arrays.deepToString(data));
        return data;
    }
    @Test(dataProvider = "build_data")
    public static void test_00all(String type,int code){
        String data="";
        if("float".equals(type)){
            data= String.valueOf(new Random().nextDouble());
            logger.info("data={}",data);

        }else if("int".equals(type)){
            data= String.valueOf(new Random().nextInt());
            logger.info("data={}",data);

        }else if("string".equals(type)){
            data=RandomStringUtils.randomAlphanumeric(5);
            logger.info("data={}",data);

        }else if("empty".equals(type)){
            data="";
            logger.info("data={}",data);

        }
    }
//    @Test
//    public static void test_01float() throws IOException, URISyntaxException {
//        String data = String.valueOf(new Random().nextDouble());
//        logger.info("data={}",data);
//        ResponseData verify = commonApi.get_verify(data);
//        Assert.assertEquals(verify.getCode(), 200);
//    }
//
//    @Test
//    public static void test_02Int() throws IOException, URISyntaxException {
//        String data = String.valueOf(new Random().nextInt());
//        logger.info("data={}",data);
//        ResponseData verify = commonApi.get_verify(data);
//        Assert.assertEquals(verify.getCode(), 200);
//    }
//
//    @Test
//
//    public static void test_03String() throws IOException, URISyntaxException {
//        String data = UUID.randomUUID().toString();
//        String randomAlphabetic = RandomStringUtils.randomAlphabetic(5);
//        logger.info("data={}",data);
//        logger.info(randomAlphabetic);
//        ResponseData verify = commonApi.get_verify(randomAlphabetic);
//        Assert.assertEquals(verify.getCode(), 400);
//    }
//
//    @Test
//
//    public static void test_04Null() throws IOException, URISyntaxException {
//        String data = "";
//        ResponseData verify = commonApi.get_verify(data);
//        Assert.assertEquals(verify.getCode(), 404);
//    }

}
